/*============================================================================*/
/*                   CONTINENTAL AUTOMOTIVE SYSTEMS                           */
/*============================================================================*/
/*                        OBJECT SPECIFICATION                                */
/*============================================================================*
* name:            MALPWM.c
* version:         1.1
* created_by:      Rodrigo Casados
* date_created:    June 7 2013
*=============================================================================*/
/* DESCRIPTION : Source file to implement main function.                      */
/*============================================================================*/
/* FUNCTION COMMENT : Implements entry point (main function) and other        */
/* application stuff.                                                         */
/*                                                                            */
/*============================================================================*/
/*                               OBJECT HISTORY                               */
/*============================================================================*/
/*  REVISION |   DATE      |                               |      AUTHOR      */
/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/*  1.1      | 7/June/2013 |                               | Rodrigo Casados */
/* Initial version for the Smart Car Race 2010 contest using Freescale        */
/* Bolero micro.                                                              */
/*============================================================================*/

#include "stdtypedef.h"
#include "MPC5604B_M27V.h"
#include "sysinit.h"
#include "MALbeMIOS.h"
#include "MALioapi.h"
#include "MALPWM.h"


/**************************************************************
 *  Name                 :  InitPWM
 *  Description          : Initialize PWM channel 7.
 *  Parameters           :  none.
 *  Return               :  none
 *  Critical/explanation :  No
 **************************************************************/

void InitPWM(void)
{
	MALbeMIOS_initEMIOS0();
	
	MALbeMIOS_initEMIOS0_ch23();

	IO_SetPinFctn(pin_PE9,PA_AM2);
}

void SetDutyCycle(T_UWORD luw_DC)
{
	if(luw_DC>=1000)
	{
		luw_DC=1000;
	}
	EMIOS_0.CH[23].CADR.R=(luw_DC+1000);
}

/**************************************************************
 *  Name                 :  InitPWM2
 *  Description          : Initialize PWM channel 7.
 *  Parameters           :  none.
 *  Return               :  none
 *  Critical/explanation :  No
 **************************************************************/
void InitPWM2(void)
{
	MALbeMIOS_initEMIOS0();
	
	MALbeMIOS_initEMIOS0_ch6();

	IO_SetPinFctn(pin_PB14,PA_AM1);
}

void SetDutyCycle2(T_UWORD luw_DC)
{
	if(luw_DC>=1000)
	{
		luw_DC=10000;
	}
	else if(luw_DC>=750)
	{
		luw_DC=5000;
	}
	else if(luw_DC>=500)
	{
		luw_DC=2500;
	}
	else if(luw_DC>=250)
	{
		luw_DC=1500;
	}
	else if(luw_DC>=100)
	{
		luw_DC=2500;
	}
	else if(luw_DC>0 && luw_DC<100 )
	{
		luw_DC=0;
	}
	EMIOS_0.CH[6].CADR.R=(luw_DC);
}

/**************************************************************
 *  Name                 :  InitPWM3
 *  Description          : Initialize PWM channel 7.
 *  Parameters           :  none.
 *  Return               :  none
 *  Critical/explanation :  No
 **************************************************************/
void InitPWM3(void)
{
	MALbeMIOS_initEMIOS0();
	
	MALbeMIOS_initEMIOS0_ch7();

	IO_SetPinFctn(pin_PB15,PA_AM1);
}

void SetDutyCycle3(T_UWORD luw_DC)
{
	if(luw_DC>=1000)
	{
		luw_DC=10000;
	}
	else if(luw_DC>=750)
	{
		luw_DC=5000;
	}
	else if(luw_DC>=500)
	{
		luw_DC=2500;
	}
	else if(luw_DC>=250)
	{
		luw_DC=1500;
	}
	else if(luw_DC>=100)
	{
		luw_DC=2500;
	}
	else if(luw_DC>0 && luw_DC<100 )
	{
		luw_DC=0;
	}
	EMIOS_0.CH[7].CADR.R=(luw_DC);
}







